package com.yuju.hotel.service.impl;

import java.util.Date;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.yuju.common.core.dao.IBaseDao;
import com.yuju.common.core.service.AbstractBaseService;
import com.yuju.hotel.dao.IFloorDao;
import com.yuju.hotel.dao.entity.Floor;
import com.yuju.hotel.model.FloorModel;
import com.yuju.hotel.model.RoomModel;
import com.yuju.hotel.service.IFloorService;
import com.yuju.hotel.service.IRoomService;
import com.yuju.util.Utils;
/**
 * 
 * 类名：FloorServiceImpl  <br />
 *
 * 功能：
 *
 * @author : zhousc <br />
 * @Date : 2017年11月27日 上午10:50:48  <br />
 * @version : 1.1 <br />
 */
@Service
public class FloorServiceImpl extends AbstractBaseService<FloorModel, Floor, String> implements IFloorService{

	@Autowired
	private IFloorDao floorDao;
	@Autowired
	private IRoomService roomService;
	
	@Override
	public IBaseDao<FloorModel, Floor, String> getDao() {
		// TODO Auto-generated method stub
		return floorDao;
	}

	/**
	 * 
	 * 功能: <br/>新增楼层
	 * 
	 * 重写：zhousc <br/>
	 * 
	 * @Date ：2017年11月27日 下午2:24:02<br/>
	 * 
	 * @param floorModel
	 * @return <br/>
	 * @see com.yuju.common.core.service.AbstractBaseService#save(java.lang.Object)
	 */
	@Override
	public int save(FloorModel floorModel){
		floorModel.setId(Utils.getUUID());
		floorModel.setGmtCreate(new Date());
		floorModel.setGmtModified(new Date());
		return this.getDao().saveSelective(floorModel);
	}
	/**
	 * 
	 * 功能: <br/>更新楼层
	 * 
	 * 重写：zhousc <br/>
	 * 
	 * @Date ：2017年11月27日 下午2:24:14<br/>
	 * 
	 * @param floorModel
	 * @return <br/>
	 * @see com.yuju.common.core.service.AbstractBaseService#updateSelective(java.lang.Object)
	 */
	@Override
	public int updateSelective(FloorModel floorModel){
		floorModel.setGmtModified(new Date());
		return this.getDao().updateSelective(floorModel);
	}
	/**
	 * 
	 * 功能:重写删除逻辑，楼层下有房间不可删除 <br/>
	 * 
	 * 重写：zhousc <br/>
	 * 
	 * @Date ：2017年12月20日 上午9:57:31<br/>
	 * 
	 * @param id
	 * @return <br/>
	 * @see com.yuju.common.core.service.AbstractBaseService#del(java.lang.Object)
	 */
	@Override
	public int del(String id){
		//查询楼层下的房间
		RoomModel roomModel = new RoomModel();
		roomModel.setFloorId(id);
		List<RoomModel> list = roomService.list(roomModel);
		//判断是否有房间数据
		if(list.size() != 0){
			return 0;
		}
		return this.getDao().del(id);
		
	}
	/**
	 * 
	 * 功能:重名验证 <br/>
	 * 
	 * 重写：zhousc <br/>
	 * 
	 * @Date ：2017年12月14日 上午11:38:00<br/>
	 * 
	 * @param floorModel
	 * @return <br/>
	 * @see com.yuju.hotel.service.IFloorService#selectByName(com.yuju.hotel.model.FloorModel)
	 */
	@Override
	public boolean selectByName(FloorModel floorModel) {
		// TODO Auto-generated method stub
		//定义返回值
		boolean result = false;
		//装载数据查询数据库
		FloorModel model = new FloorModel();
		model.setName(floorModel.getName());
		model.setBuildingId(floorModel.getBuildingId());
		//修改时验证重名
		if (Utils.isNotNull(floorModel.getId())) {
			FloorModel floorModel1 = convert(this.getDao().getObj(floorModel.getId()));
			if (floorModel.getName().equals(floorModel1.getName())) {
			        result = true;
			    } else {
			   	 	Map<Object, Object> beanMap = getBeanMap(model);
			        List<FloorModel> list = this.getDao().list(beanMap);
			        if (list.size() == 0) {
			            result = true;
			        }
			    }
		//新增验证重名
		}else {
			Map<Object, Object> beanMap = getBeanMap(model);
			    List<FloorModel> list = this.getDao().list(beanMap);
			    if (list.size() == 0) {
			        result = true;
			    }
			}
		return result;
	}
	
	
}
